import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import './styles/drawer-fix.css'
import App from './App.tsx'
// import { initWebVitalsMonitoring } from './utils/web-vitals-monitor'
import { registerServiceWorker } from './utils/register-sw'
import { initWechatAdapter } from './utils/wechat-adapter'
import { useUserStore } from './stores'

// 初始化移动端和微信浏览器适配
if (typeof window !== 'undefined') {
  // 在移动端启用 vConsole (使用CDN加载)
  const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent)
  if (isMobile || import.meta.env.DEV) {
    const script = document.createElement('script')
    script.src = 'https://unpkg.com/vconsole@latest/dist/vconsole.min.js'
    script.onload = () => {
      // @ts-ignore
      const vConsole = new window.VConsole()
      console.log('📱 vConsole 已启用，点击右下角绿色按钮打开控制台')
    }
    document.head.appendChild(script)
  }

  // 初始化微信浏览器适配（轻量级，不阻塞渲染）
  initWechatAdapter()

  // TODO: 重新启用 web-vitals 监控（需要安装 web-vitals 包）
  // initWebVitalsMonitoring()

  // 如果用户已登录，预加载常用路由以提升性能
  // 使用 requestIdleCallback 延迟执行，避免阻塞
  const idleCallback = window.requestIdleCallback || ((cb) => setTimeout(cb, 1))
  idleCallback(() => {
    const userStorage = localStorage.getItem('user-storage')
    if (userStorage) {
      try {
        const userData = JSON.parse(userStorage)
        if (userData.state?.token) {
          // 使用 requestIdleCallback 延迟预加载
          idleCallback(async () => {
            const { preloadAuthenticatedRoutes } = await import('./utils/route-preloader')
            preloadAuthenticatedRoutes()
          })
        }
      } catch (e) {
        // 静默处理错误，不影响用户体验
      }
    }
  })

  // 注册Service Worker（仅生产环境，延迟加载）
  if (import.meta.env.PROD) {
    window.addEventListener('load', () => {
      requestIdleCallback(() => {
        registerServiceWorker()
      })
    }, { once: true })
  }

  // 开发环境：在控制台提供快捷命令
  if (import.meta.env.DEV) {
    // @ts-ignore - 添加全局开发工具
    window.devTools = {
      // 清除登录状态
      clearLogin: () => {
        localStorage.removeItem('user-storage')
        console.log('✅ 登录状态已清除，刷新页面生效')
        setTimeout(() => location.reload(), 500)
      },
      // 查看当前登录状态
      checkLogin: () => {
        const data = localStorage.getItem('user-storage')
        if (data) {
          try {
            const parsed = JSON.parse(data)
            console.log('📊 当前登录状态:', parsed.state)
          } catch (e) {
            console.log('❌ 无法解析登录数据')
          }
        } else {
          console.log('❌ 未登录')
        }
      }
    }
    console.log('🛠️  开发工具已加载，可用命令：')
    console.log('  - devTools.clearLogin()  清除登录状态')
    console.log('  - devTools.checkLogin()  查看登录状态')
  }
}

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <App />
  </StrictMode>,
)
